/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */

/**
 * The key for the GC tree in summary.
 *
 * @internal
 */
export const gcTreeKey = "gc";
/**
 * The prefix for GC blobs in the GC tree in summary.
 *
 * @internal
 */
export const gcBlobPrefix = "__gc";
/**
 * The key for tombstone blob in the GC tree in summary.
 *
 * @internal
 */
export const gcTombstoneBlobKey = "__tombstones";
/**
 * The key for deleted nodes blob in the GC tree in summary.
 *
 * @internal
 */
export const gcDeletedBlobKey = "__deletedNodes";
/**
 * The key for the GC Data blob in attach summaries.
 *
 * @internal
 */
export const gcDataBlobKey = ".gcdata";

/**
 * Garbage collection data returned by nodes in a Container.
 * Used for running GC in the Container.
 * @legacy @beta
 */
export interface IGarbageCollectionData {
	/**
	 * The GC nodes of a Fluid object in the Container. Each node has an id and a set of routes to other GC nodes.
	 */
	gcNodes: { [id: string]: string[] };
}

/**
 * GC details provided to each node during creation.
 * @legacy @beta
 */
export interface IGarbageCollectionDetailsBase {
	/**
	 * A list of routes to Fluid objects that are used in this node.
	 */
	usedRoutes?: string[];
	/**
	 * The GC data of this node.
	 */
	gcData?: IGarbageCollectionData;
}
